home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / netz / verteiler / zpoint / start_verteiler.zprx < prev   
Text File  |  1995-07-10  |  11KB  |  302 lines

  1.  
  2. /*
  3.     $VER: Start_Verteiler.zprx V1.00 (18-May-95) Copyright (c) Nils Görs
  4.               Verteiler Copyright (c) 1995 by Thomas Eicher
  5.  
  6. [Diese Version benoetigt ZPoint beta 37.191 oder spaeter.
  7.  This version requires ZPoint beta 37.191 or later.  --Tom]
  8.  
  9.    FUNKTIONSBESCHREIBUNG:
  10.  
  11.     Dieses Skript wurde speziell für das Programm VerteilerVerwaltung,
  12.     kurz  VV,  zwecks  Anbindung an Zodiac's Point entwickelt.  Dieses
  13.     Skript   dient   lediglich  der  Auswertung-  und  Versendung  von
  14.     Nachrichten an  mehrere  Empfänger, die  mittels  `VV'  ausgewählt
  15.     wurden.
  16.  
  17.  
  18.    BENUTZUNG:
  19.  
  20.     Schreiben  und  versenden Sie Ihre Nachrichten wie bisher.  Tragen
  21.     Sie  aber  anstelle  aller  Empfänger,  an die Sie diese Nachricht
  22.     senden  möchten, lediglich einen ein. Hierbei hat es sich bewährt,
  23.     die  eigenen Adresse oder J.Random@meine.Domain einzusetzen.  Dies
  24.     hat  den Zweck, falls Sie vergessen sollten die Adresse zu ändern,
  25.     damit  die  Nachricht  nicht  ungewollt  in  der  ganzen  Welt auf
  26.     wanderschaft geht.
  27.     Begeben  Sie  sich  dann  in  das  Spool-Brett,  wählen  dort  die
  28.     entsprechende  Nachricht  aus und starten Sie dieses ARexx-Skript.
  29.     Es wird  dann das Programm `VV' gestartet, wo Sie ganz bequem Ihre
  30.     Verteilerlisten  erstellen, editieren, löschen und  zum  versenden
  31.     von Nachrichten bereitstellen können.
  32.     Start_Verteiler.zprx  wertet  dann  zum einen die Orignalnachricht
  33.     aus,  zum anderen generiert das Skript eine neue Nachricht.  Diese
  34.     neue  Nachricht  weist  natürlich die selben Attribute vor wie die
  35.     Originalnachricht.   Zusätzlich  werden dann zu der Nachricht, die
  36.     verschiedenen Empfänger beigefügt.
  37.  
  38.  
  39.    INSTALLATION:
  40.  
  41.     Kopieren    Sie    bitte    das   Hauptprogramm,   'VV'   in   das
  42.     Tools-Verzeichnis  von Zodiac's Point.  Dieses ARexx-Skript gehört
  43.     in das Rexx-Verzeichnis von Zodiac's Point.
  44.  
  45.     Um  das  Programm  nun  über eine Funktionstaste starten zu können
  46.     müssen Sie folgenden Eintrag in die Datei `fkeys.zp' hinzufügen.
  47.     F1:SYS:Rexxc/RX ZPOINT:Rexx/Start_Verteiler.zprx %s
  48.  
  49.     Alternativ hierzu haben Sie aber auch die Möglichkeit das Programm
  50.     aus dem Pulldown-Menu aufzurufen.  Dazu müssen Sie lediglich einen
  51.     neuen Eintrag in die Datei `usermenus.zp' machen:
  52.     *Nachrichtenverteiler
  53.     Sys:Rexxc/RX ZPoint:Rexx/Start_Verteiler.zprx %s
  54.  
  55.  
  56.     Sie erreichen die Autoren wie folgt:
  57.  
  58.        t.eicher@hsp.zer.de
  59.        N.Goers@Art-Line.Art-Line.de
  60.  
  61.    Das Programm Verteiler, welches mit diesem Skript gestartet wird,
  62.    benötigt die "triton.library" >=V1.2
  63.    Triton is (C) by Stefan Zeiger <s.zeiger@laren.rhein-main.de>  */
  64.  
  65. /*----------------------------------------------------------------
  66.   -Ab hier können Sie das Skript nach Ihren Bedürfnissen anpassen-
  67.   ----------------------------------------------------------------*/
  68. /* wo befindet sich das Hauptprogramm ?? */
  69. Verteiler.main = "zpoint:tools/verteiler"
  70.  
  71. /*----------------------------------------------------------------*/
  72. /* wo befindet sich die Database
  73.            (default: progdir:verteiler.database)                  */
  74. DataBase = "progdir:verteiler.database"
  75.  
  76. /*----------------------------------------------------------------*/
  77. /* wo ist die Datei mit den Empfängern (Verteilerliste)?          */
  78. RCVFILE.main   = "t:RCVFILE"
  79.  
  80. /*----------------------------------------------------------------*/
  81. /* zum Auslagern evtl. Daten (Binär- und oder Textnachrichten)    */
  82. Datei.Tmp      = "t:Out.tmp"
  83.  
  84. /*----------------------------------------------------------------*/
  85. /* Erlaubte Optionen:
  86. PERSONAL unterbindet, daß im Kopf der Nachricht vermerkt wird, wer
  87.          alles Kopien dieser Nachricht erhalten hat.
  88. ARCHIVE  Nachricht versenden und im Nachrichtenarchiv speichern.
  89. COOKIE   Cookie anhängen (nur bei Textnachrichten).
  90. Beispiele:
  91. wopts         = 'PERSONAL '
  92.                          ~Bitte beachten Sie dieses Freizeichen!
  93. wopts         = 'COOKIE ARCHIVE '
  94. */
  95. wopts          = ''
  96.  
  97. /*----------------------------------------------------------------*/
  98. /* Originalnachricht wird gelöschen ??
  99.    1 = mit Sicherheitsabfrage
  100.    0 = ohne Sicherheitsabfrage                                    */
  101. DelImmer       = 0
  102.  
  103. /*----------------------------------------------------------------*/
  104. /* In welcher Sprache möchten Sie arbeiten ??
  105.    Möglichkeiten: deutsch
  106.                   english                                         */
  107. Sprache        = "deutsch"
  108. /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  109.  *      Bitte geben Sie hier ihre Präferenzen ein !                *
  110.  *******************************************************************/
  111.  
  112. /*******************************************************************
  113.  *      Bitte unterhalb dieser Zeile nichts mehr verändern!        *
  114.  *******************************************************************/
  115.  
  116. NL             = '0a'x
  117. None           = "-NONE-"
  118.  
  119. Bezug          = "BEZ"
  120. Crypto         = "CRYPT"
  121. Diskussion     = "Diskussion-in"
  122. Empfangsbest   = "EB"
  123. PGPSignatur    = "PGP-SIG"
  124. Anf            = '"'
  125. Space          = ' '
  126.  
  127. /* Hier sind die Texte in den unterschiedlichen Sprachen.  Falls
  128.    Sie diese Texte in eine andere Sprache übersetzen sollten, dann
  129.    senden Sie mir die übersetzten Texte doch bitte zu. */
  130. deutsch.text0  = '"Verteiler läuft!"'
  131. english.text0  = '"Verteiler is running!"'
  132. deutsch.text1  = "Bitte begeben Sie sich"NL,
  133.                  "in das Spool-Brett!"
  134. english.text1  = "Please go into the Spool-Area"
  135. deutsch.text2  = "Empfangsbestätigungen und Kontrollnachrichten"NL,
  136.                  "können nicht bearbeitet werden!" 
  137. english.text2  = "receive receptions and controlmessages"NL, 
  138.                  "can not be handled!" 
  139. deutsch.text3  = "Fehler beim Start von Verteiler!" 
  140. english.text3  = "error while opening 'Verteiler!'" 
  141. deutsch.text4  = "Sie haben abgebrochen. Die Nachricht wird"NL, 
  142.                  "weiterhin nur an den Originalempfänger gesendet." 
  143. english.text4  = "You have canceled. The message will"NL, 
  144.                  "be send to the main receiver, only." 
  145. deutsch.text5  = "Fehler beim Speichern!" 
  146. english.text5  = "error while saving!" 
  147. deutsch.text6  = "Kann Nachricht nicht verschicken!" 
  148. english.text6  = "Couln't send message!" 
  149. deutsch.text7  = "Nachricht wurde verschickt." 
  150. english.text7  = "Message is on the way, now." 
  151. deutsch.text8  = "Soll die Ursprungsnachricht gelöscht werden?" 
  152. english.text8  = "Shall I delete the original message?" 
  153. deutsch.text9  = "kodierte Nachrichten können z.Zt. nicht"NL, 
  154.                  "bearbeitet werden!" 
  155. english.text9  = "At the moment it's not possible to handle"NL, 
  156.                  "crypted messages!" 
  157. deutsch.text10 = "Bitte die erneute QPC-Passwortabfrage"NL, 
  158.                  "abbrechen, bzw. nur RETURN drücken!" 
  159. english.text10 = "Please cancel the upcoming QPC-passwortrequester", 
  160.                  "or simply press return, ONLY!" 
  161.  
  162. OPTIONS RESULTS 
  163.  
  164. /* ------ von welchem ZP Port wurde das Script aufgerufen ? ------ */ 
  165. PARSE ARG zpPort 
  166. IF zpPort == "" THEN 
  167.    zpPort = "ZPoint" 
  168. ADDRESS VALUE zpPort 
  169.  
  170. /* ------------- Dieses Skript läuft erst ab V37.191 ------------- */ 
  171. WHICHVERSION 
  172. IF RESULT < "37.191" THEN DO 
  173.  REQUESTNOTIFY "Dieses Skript benötigt mind. die Zodiac's Point 37.191 (15.5.95)" 
  174.  EXIT 
  175. END 
  176.  
  177.  
  178. /* --- Dieses Skript darf nur im Spool-Brett ausgeführt werden --- */ 
  179. WHICHLEVEL 
  180.  IF Result ~= "BOARD" then 
  181.  DO 
  182.   Text1 = VALUE(sprache||.text1); REQUESTNOTIFY Text1; EXIT 
  183.  END 
  184.  
  185.   BOARDINFO LABEL; BOARDLABEL=Result 
  186. IF INDEX(Boardlabel,'(Spool') == 0 THEN 
  187. DO 
  188.   Text1 = VALUE(sprache||.text1); REQUESTNOTIFY Text1; EXIT 
  189. END 
  190.  
  191. /****************************** 
  192.  * hier ist das Hauptprogramm * 
  193.  ******************************/ 
  194. _Main: 
  195.  
  196. MESSAGEINFO STATUS 
  197. IF RESULT == "CTL,EB" THEN DO /* Kontrollnachricht! */ 
  198.     Text1 = VALUE(sprache||.text2); REQUESTNOTIFY Text1; EXIT 
  199. END 
  200.  
  201. /* Ist die Nachricht kodiert worden (QPC bzw. PGP) ? */ 
  202. FINDHEADER Crypto 
  203. IF RESULT ~= None THEN DO 
  204.  IF RESULT == "QPC" THEN DO 
  205.   Text1 = VALUE(sprache||.text10); REQUESTNOTIFY Text1 
  206.   CALL _SendMails 
  207.   END 
  208.   Text1 = VALUE(sprache||.text9); REQUESTNOTIFY Text1; EXIT 
  209. END 
  210.  
  211. _SendMails: 
  212. text1 = VALUE(sprache||.text0) 
  213. "guilock text="text1 
  214.  
  215. IF ~EXISTS(RCVFile.main||zpPort) THEN ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:' 
  216.  
  217. ADDRESS COMMAND Verteiler.main 'DB='Database, 
  218.                                'INTO='RCVFILE.main||zpPort, 
  219.                                'PB='zpPort 
  220.  
  221. IF (RC) ~= 0 THEN DO           /* Fehler beim öffnen von Verteiler */ 
  222.   Text1 = VALUE(sprache||.text3); REQUESTNOTIFY Text1; EXIT 
  223. END; ELSE 
  224.  
  225. IF ~EXISTS(RCVFile.main||zpPort) THEN DO 
  226.     Text1 = VALUE(sprache||.text4); REQUESTNOTIFY Text1
  227. EXIT; END 
  228.  
  229. MESSAGEINFO POSITION /* an der wievielten Position befindet sich die
  230. MailPosition=RESULT     Originalnachricht ? */ 
  231.  
  232. /*  Es  wird  nach Empfänger, Betreff, Diskussion in, PGP-Signatur und 
  233.     Empfangsbestätigung gesucht. Es wird lediglich bis zum Textkörper 
  234.     durchsucht */ 
  235.  
  236. MESSAGEINFO RECEIVER 
  237. ReceiverName=RESULT 
  238. MESSAGEINFO FULLSUBJECT 
  239. SubjectName=RESULT 
  240.  
  241.  FINDHEADER Diskussion 
  242.   IF RESULT ~= None THEN 
  243.   wopts = wopts||Space||'FOLLOWUP '||Anf||RESULT||Anf 
  244.  
  245.  FINDHEADER Empfangsbest 
  246.   IF RESULT ~= None THEN 
  247.   wopts = wopts||Space||'CONFIRM' 
  248.  
  249.  FINDHEADER PGPSIGNATUR 
  250.   IF RESULT ~= None THEN 
  251.   wopts = wopts||Space||'PGPSIG' 
  252.  
  253.  FINDHEADER ALL Bezug 
  254.   IF RESULT ~= None THEN 
  255.   wopts = wopts||Space||'REFERENCES '||Anf||RESULT||Anf 
  256.  
  257. MESSAGEINFO TYPE 
  258.  IF RESULT == "BINARY" THEN wopts = wopts||space||'BINARY' 
  259.  
  260. SAVEMESSAGEBODY Datei.tmp||zpPort 
  261. IF (RC) == 0 THEN 
  262.  DO 
  263.   Text1 = VALUE(sprache||.text5); REQUESTNOTIFY Text1 
  264.   CALL _DeleteTemps 
  265.  END 
  266.  
  267.  WRITEMESSAGE Datei.tmp||zpPort, 
  268.                         'RECEIVER' ReceiverName, 
  269.                         'SUBJECT'  Anf||SubjectName||Anf, 
  270.                         'RCVFILE'  RCVFILE.main||zpPort, 
  271.                          wopts 
  272. id = RESULT /* Hat das versenden geklappt ? */ 
  273. IF (id = '') THEN DO               /* Hups! Fehler! */ 
  274.     Text1 = VALUE(sprache||.text6); REQUESTNOTIFY Text1 
  275.     CALL _DeleteTemps 
  276. END 
  277. ELSE                               /* Alles klar! */ 
  278.     Text1 = VALUE(sprache||.text7); REQUESTNOTIFY Text1 
  279.  
  280. IF DelImmer ~= 0 THEN              /* Soll nachgefragt werden? */ 
  281.    DO                  /* Soll die Nachricht gelöscht werden ? */ 
  282.     Text1 = VALUE(sprache||.text8); REQUESTRESPONSE Text1 
  283.    END 
  284.     IF RC = 1 THEN     /* Wenn 1, dann Nachricht löschen! */ 
  285.      DO 
  286.        JUMPTOMESSAGE MailPosition; DELETE ONE; DOWN 
  287.        CALL _DeleteTemps 
  288.      END 
  289.  
  290. _DeleteTemps: 
  291.      ADDRESS COMMAND 'delete' RCVFILE.main||zpPort '>NIL:' 
  292.      ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:' 
  293.      guilock off              /* Die GUI wieder freigeben! */ 
  294.     EXIT 
  295. /* EOS */ 
  296.  
  297. Mfg, 
  298.  Nils 
  299. -- 
  300. Once bitten, twice shy. 
  301.  
  302.